Jeg lagde meg et tastatur
Mamma har alltid vært en person jeg stoler på, og er det to ting hun virkelig har lært meg, så er det at det er viktig for ryggen å ha en god seng — man tilbringer tross alt 1/3 av livet sitt der — og at hjemmelagd (mat) alltid er best.
Ryggen min har allerede en god seng, men hva med senga til fingrene mine? Det stedet hvor fingrene oppholder seg 1/3 av sitt yrkesaktive liv? De har alltid hatt en helt ålreit seng, men hvis man virkelig skal varte dem opp så må man ifølge mamma gi dem en hjemmelagd seng. Og man hører på hva mor sier.
Planlegging og innkjøp
Så jeg bestemte meg for å lage en seng (heretter “tastatur”) til fingerne mine. De hadde følgende krav:
Én halvdel til hver hånd
Såkalt splitt. Ingen dobbeltseng her altså. Dette tilrettelegger rett og slett for bedre ergonomi siden halvdelene kan flyttes og vris uavhengig av hverandre. Prøv selv: Hold armene dine foran deg i en naturlig tastaturposisjon. Sjansen er stor for at de ikke er klint inntil hverandre og at fingrene vil forme en slags V.
Enkodere
(Vribrytere). Disse kan brukes til så mangt. Området de skinner på er spamming av tastetrykk. Det blir ofte mye piling rundt omkring når man programmerer, og dette kan gjøres mye hurtigere med en enkoder.
Tidligere har jeg også tatt meg selv i ofte gripe etter musa når jeg vil scrolle i koden, men nå har jeg i stedet konfigurert enkoderen min til å hoppe ti linjer per knepp. (Jeg kunne også ha konfigurert enkoderen til å utføre ekte scroll, men det fordrer at musepekeren hviler på riktig sted.)
Andre ting man kan bruke enkoderen til er for eksempel tabbing (så man kan surfe på Internett uten å bruke mus), og styring av volum. Egentlig er det bare fantasien som setter grenser. Jeg planlegger for eksempel å emulere analog joystick-input, så enkoderen kan brukes som et slags ratt i mitt favoritt racing-spill.
Innebygde miniskjermer
“Hvorfor trenger du dette?” Jeg trenger ikke dette … Men det er tøft. Og det finnes selvsagt praktiske bruksområder — man kan vise hva pokker man vil på disse. Det mest praktiske jeg bruker mine til er å vise et kart over knappeoppsettet mitt, samt å vise at caps lock står på. Men da må man nesten titte ned på tastaturet sitt, da. Og det er jo ikke meningen. Men det er tøft.
Lavprofil
Muligens bare personlig preferanse, men andre tastaturer jeg eier har så høye knapper at jeg føler jeg må strekke fingrene mine over for å komme til. Dette skal nå bli en saga blott.
Minst mulig overflødige knapper
Den observante leser (eller bildetitter) har kanskje sett at det ikke akkurat er 105 knotter fordelt på mine to halvdeler, sånn som det er på et konvensjonelt tastatur. Mitt tastatur har flere “lag”. Èn og samme knapp kan gjøre forskjellige ting avhengig av hvilken modifier du holder inne. Når du tenker deg om, så har jo vanlige tastaturer også denne funksjonen. Holder du inne Shift
så blir bokstavene store, holder du inne Ctrl
så skjer det noe helt annet, og kanskje skjer det også spennende ting om du holder inne Alt
eller AltGr
(og hva skjer om du prøver å holde inne mange av disse modifierne samtidig?).
Så da mener jeg at det holder med knapper for vanlige bokstaver, Mellomrom
, Backspace
, Enter
, Ctrl
og Shift
. Jeg hater å flytte henda mine, så tall, F-taster, Home
, End
, Tab
, Escape
og faens oldemor ligger og skjuler seg bak bokstavtastene mine i egne lag. Deilig!
Mulighet for tenting
“Tenting?” Ja? Kan du ikke engelsk? Jeg ønsker å kunne tilte halvdelene mine så de utgjør et slags telt, altså at de er høyt oppe må midten der de møter hverandre, og lavt nede ut mot kantene. Akkurat som et telt. Dette for å føye seg etter de fleste henders naturlige hvileposisjon. Prøv testen med å holde hendene foran deg igjen og se.
Et tastatur som heter Kyria rev3 så ut til å kunne oppfylle disse kriteriene, så jeg bestilte meg et byggesett. Innholdet var som følger:
- 2 × PCB (kretskort — ett til hver halvdel)
- 2 × bunn- og topp-plater som beskytter og holder ting på plass
- Mikrokontrollere
- Skjermer
- Sokler til skjermer og mikrokontrollere
- Deksler til skjermer
- Hot-swap-sokler
- Dioder
- TRRS-sokler
- TRRS-kabel
- LEDs som skal lyse ned i pulten
- LEDs som skal lyse opp gjennom knappene
- Tenting-pucks (en slags adapter for å forenkle tenting)
- Enkodere
- Brytere (knapper rett og slett)
- Knappehetter
- Nødproviant som ble slukt før nøden meldte seg
Lodding
Følgende måtte loddes:
- Dioder — én for hver knapp
- RGB-underlys-LEDs — seks stykker på hver side
- RGB-LEDs for hver knappene
- Hot-swap-sokler til bryterne
- Enkodere — én på hver side
- Reset-knapper — én på hver side
- Motstander — to på hver side
- TRRS-plugger — én på hver side
- Sokler for mikrokontrollerne (hunnplugger i kretskortet og hannplugger i mikrokontrolleren)
- Sokler for skjermene (samme som over)
Dette tar noen timer og kan være litt plundrete, men når man er inne i det blir det ganske zen og tilfredsstillende — litt som med puslespill (bare at puslespill ikke legger igjen svimerker i pulten, noe loddingen min har). Her anbefaler jeg å benytte seg av en ikke-elendig loddebolt med en passende tupp. Jeg bruker en som ser litt ut som en sprøytespiss, bare hvor hullet er tettet igjen. Anbefaler også å bruke veldig tynt loddetinn. Det er veeeldig små greier som skal loddes her, så man trenger ofte fryktelig lite tinn. Mitt tinn var 0,2 mm bredt. Det er også fullstendig umulig å få utrettet noe som helst uten en (vinklet) pinsett.
Problemer
Jeg er ingen autoritet innen lodding og slet spesielt mye med lodding av underlyset. Når man lodder er det viktig å få varmet opp kontaktpunktene som skal loddes sammen, men disse LED-ene hadde veldig lite eksponert metall som loddebolten kunne få tak på. Etter at jeg oppfant min egen smøre-opp-og-ned-teknikk gikk det imidlertid greit.
Under testing fant jeg også ut at jeg hadde slurvet fælt med lodding av dioder, hot-swap-sokler og knappelys. Her er det dog ikke verre enn at man tester, finner ut av noe ikke funker, pirker litt, finner ut at noe er løst, og lodder på nytt. Resten av loddingen pleier å gå greit, med mindre man griser med tinnet og ender opp med å koble sammen noe som ikke skal kobles sammen (bridging). Men det skal heldigvis en del grising til for å oppnå dette.
To kardinaltabber greide jeg likevel å presse inn, og dette førte rett og slett til at jeg ødela mikrokontrollerne og gjorde hele tastaturet ubrukelig. Det jeg gjorde var å lodde mens tastaturet var koblet til (så jeg kjapt kunne se om LED-en fungerte, tenkte jeg) og å koble inn og ut TRRS-pluggen mens tastaturet var koblet til. Du må ikke gjøre det!
Men hvordan fiksa jeg dette? Ved å bestille nye mikrokontrollere og punge ut 800 kroner ekstra. Enkel fiks.
Montering
Når alt omsider så ut til å fungere kunne jeg gå videre til sjarmøretappen som består av ren montering. Følgende skulle monteres:
- Brytere
- Hetter til bryterne (keycaps)
- Hetter til enkoderne
- Tenting-puck (en slags adapter for å forenkle tenting)
- Skjermdeksler
- Bunnplater
- Tentingmekanismer
Siden hot-swap allerede var installert var det bare på klemme på plass bryterne og å klemme på plass hettene oppå der igjen. Resten er bare ren skruing.
Tenting-puckene har et skruehull på 1/4 tomme, noe som gjør dem kompatible med det meste av kamera-tripods. Jeg valgte å feste dem til Z-fleks tilthoder.
Konfigurering og programmering
Og da gjenstår det bare å konfigurere/programmere tastaturet. Tastaturet ble flashet med en fastvare som heter QMK, og som er standard for de aller fleste hjemmelagde (og noen bortelagde) tastaturer.
Med denne kan man velge å gjøre så mye eller lite man vil. Er du av den late typen kan du flashe med en ferdigbygd fastvare som tillater deg å endre på knappeoppsettet i sanntid med enkel dra-og-slipp med musa (rett i nettleseren om du vil!).
Er du litt mer eventyrlysten kan du gå inn og flikke litt på koden. Jeg var plent nødt om jeg ønsket å endre litt på funksjonaliteten til enkoderne og skjermene. Koden er laget i C, og den kompileres med et eget QMK-verktøy.
Jeg har ikke tenkt å gå så nøye i detalj på koden (kanskje ved en senere anledning?), men her kan du se hvordan jeg har konfigurert min venstre enkoder.
bool encoder_update_kb(uint8_t layer, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
if (layer == 0) {
switch(biton32(layer_state)) {
case 1:
if (clockwise) {
tap_code(KC_RGHT);
} else {
tap_code(KC_LEFT);
}
return true;
case 4:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
return true;
default:
if (clockwise) {
tap_code(KC_DOWN);
} else {
tap_code(KC_UP);
}
return true;
}
}
}
Og etter dette var det bare å lene seg tilbake og nyte sin nye kreasjon. Jeg er bare ca 30 % mindre effektiv med dette enn jeg er med et vanlig tastatur, så dette må betraktes som en stor seier. Dessuten kan jeg bruke det som sjekketriks.
Og, du, vi ønsker oss flere kloke hoder i Systek. Ta en titt på www.systek.no og se om det er noe for deg. :)